Elm এর সিনট্যাক্সের মৌলিক ধারণা
Elm একটি ফাংশনাল প্রোগ্রামিং ভাষা, যা সহজ, পরিষ্কার এবং টাইপ-সেফ কোড লেখার সুবিধা দেয়। Elm এর সিনট্যাক্স অনেকটা Haskell-এর মতো, তবে এটি ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য বিশেষভাবে ডিজাইন করা। এখানে Elm এর সিনট্যাক্সের কিছু মৌলিক ধারণা এবং প্রধান উপাদান তুলে ধরা হলো।
১. অপারেটর এবং অ্যাসাইনমেন্ট
- অপারেটর: Elm এ সাধারণভাবে গাণিতিক এবং লজিক্যাল অপারেটর ব্যবহার করা হয়, যেমন
+,-,*,/,==,!=,<,>,<=,>=, ইত্যাদি। অ্যাসাইনমেন্ট: Elm এ কোনো ভ্যারিয়েবলের মান পরিবর্তন করা সম্ভব নয়, কারণ এটি একটি ফাংশনাল ভাষা যেখানে ডেটা অপরিবর্তনীয় (immutable)। একবার ভ্যারিয়েবল আসাইন করা হলে, তা আর পরিবর্তিত হয় না।
উদাহরণ:x = 5 y = x + 3 -- y এর মান হবে 8
২. ভ্যারিয়েবল এবং ফাংশন ডিফাইনেশন
Elm এ ভ্যারিয়েবল এবং ফাংশন ডিফাইন করতে সহজ সিনট্যাক্স ব্যবহার করা হয়।
ভ্যারিয়েবল:
x = 10 name = "Elm"ফাংশন:
Elm এ ফাংশন ডিফাইন করার জন্য=চিহ্ন ব্যবহার করা হয় এবং ফাংশনের প্যারামিটার গুলি স্পেস দ্বারা আলাদা করা হয়।উদাহরণ:
add a b = a + bএখানে
addএকটি ফাংশন যা দুটি প্যারামিটার নেয় এবং তাদের যোগফল প্রদান করে।
৩. টাইপস (Types)
Elm একটি স্ট্যাটিক টাইপ সিস্টেম ব্যবহার করে, তাই প্রতিটি মানের টাইপ নির্ধারণ করা হয়। সাধারণভাবে, Elm টাইপ ইনফারেন্স ব্যবহার করে, তবে আপনি টাইপটি স্পষ্টভাবে উল্লেখ করতে চাইলে তা করতে পারেন।
টাইপ ডিফাইনেশন:
add : Int -> Int -> Int add a b = a + bএখানে
addফাংশন দুটিIntটাইপের প্যারামিটার নেয় এবং একটিIntটাইপের রিটার্ন দেয়।
৪. কন্ডিশনাল স্টেটমেন্ট
Elm এ কন্ডিশনাল স্টেটমেন্টের জন্য if-else ব্যবহার করা হয়।
উদাহরণ:
isEven n =
if n % 2 == 0 then
"Even"
else
"Odd"এখানে isEven ফাংশন একটি পূর্ণসংখ্যা গ্রহণ করে এবং তার ভিত্তিতে এটি "Even" অথবা "Odd" রিটার্ন করে।
৫. লিস্ট এবং অ্যারে
Elm এ লিস্ট একটি অপরিবর্তনীয় (immutable) ডেটা স্ট্রাকচার। এটি এলিমেন্টের একটি সিকোয়েন্সের মতো কাজ করে।
লিস্ট ডিফাইন করা:
numbers = [1, 2, 3, 4, 5]লিস্টে ফাংশন প্রয়োগ:
doubledNumbers = List.map (\x -> x * 2) numbers
এখানে List.map ফাংশনটি numbers লিস্টের প্রতিটি এলিমেন্টে \x -> x * 2 ফাংশনটি প্রয়োগ করে এবং একটি নতুন লিস্ট তৈরি করে।
৬. ম্যাচিং (Pattern Matching)
Pattern matching ব্যবহার করে আপনি কিছু ভ্যারিয়েবল বা ডেটা স্ট্রাকচার ম্যাচ করতে পারেন। এটি Elm এর একটি শক্তিশালী বৈশিষ্ট্য, যা ডেটা থেকে প্রয়োজনীয় মান বের করতে সহায়তা করে।
নির্দিষ্ট কেস অনুযায়ী ম্যাচিং:
describeNumber : Int -> String describeNumber n = case n of 0 -> "Zero" 1 -> "One" _ -> "Other"
এখানে, describeNumber ফাংশনটি n নামক পূর্ণসংখ্যাকে case স্টেটমেন্টের মাধ্যমে পরীক্ষা করে এবং সঠিক স্ট্রিং রিটার্ন করে।
৭. পাইপ অপারেটর (|>)
Elm এ পাইপ অপারেটর |> খুবই শক্তিশালী এবং এটি একটি ফাংশনকে অন্য ফাংশনে পাঠানোর জন্য ব্যবহৃত হয়, যা ফাংশনাল প্রোগ্রামিং শৈলীতে কোড লেখাকে আরো সহজ এবং পরিষ্কার করে তোলে।
পাইপ অপারেটরের ব্যবহার:
result = 5 |> (\x -> x + 3) |> (\x -> x * 2)
এখানে প্রথমে 5 এর উপর +3 অপারেশন করা হবে, তারপর তার রেজাল্টের উপর *2 অপারেশন করা হবে।
৮. ডাটাটাইপ (Custom Types)
Elm এ কাস্টম ডাটাটাইপ বা Union Types তৈরি করা যায়, যা আপনাকে ডেটার বিভিন্ন ফরম্যাটে কাজ করতে সহায়তা করে।
ডাটাটাইপ তৈরি করা:
type Shape = Circle Float | Rectangle Float Float
এখানে Shape নামক একটি কাস্টম ডাটাটাইপ তৈরি করা হয়েছে, যা দুটি কনস্ট্রাক্টর Circle এবং Rectangle ধারণ করে। Circle একটি Float রেডিয়াস গ্রহণ করে এবং Rectangle দুটি Float (উচ্চতা এবং প্রস্থ) গ্রহণ করে।
উপসংহার
এটি ছিল Elm এর সিনট্যাক্সের মৌলিক ধারণা। Elm এর সিনট্যাক্স সহজ এবং পরিষ্কার, যা ফাংশনাল প্রোগ্রামিং শৈলীতে কোড লেখার জন্য অত্যন্ত উপযোগী। টাইপ সিস্টেম, লিস্ট এবং কাস্টম টাইপসের মাধ্যমে আপনি খুবই নির্ভরযোগ্য এবং ত্রুটি-মুক্ত ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more